package cap2;

class CuentaBancaria{
	//Atributos de clase
	/*Define el monto máximo que se puede extraer sin fondos en la cuenta*/
	private static final int maxDescubierto=1000;
	//Atributos de Instancia
	/*El codigo se establece al crear la cuenta corriente bancaria  y no cambia
	El saldo va a ser siempre mayor a -maxDescubierto*/
	private int codigo;
	private float saldo;
	// Constructores
	public CuentaBancaria(int cod) {
		codigo = cod; saldo = 0;}	
	public CuentaBancaria(int cod, float sal) {
	//Requiere sal>-maxDescubierto
		codigo = cod; saldo = sal;}  	
	// Comandos
	public void depositar(float mto){
	//Requiere mto > 0
	   saldo+=mto;}	   
	public boolean extraer(float mto){
	/*si el mto es mayor a saldo+maxDescubierto retorna false y la extracción no se realiza*/
	  boolean puede = true;
	  if (saldo+maxDescubierto >= mto)
	    saldo=saldo-mto;
	  else
	    puede = false;
	  return puede;}
	// Consultas	
	public int obtenerCodigo(){
	  return codigo;}	
	public float obtenerSaldo(){
	  return saldo;}
	public float obtenerMaxDescubierto(){
	  return maxDescubierto;}
	public boolean enDescubierto(){
	  return saldo < 0;}
	public String toString(){
	    return codigo+" "+saldo;
	    }	   

	public int mayorSaldo(CuentaBancaria cta){
		/*Retorna el código de la cuenta corriente bancaria  que tiene mayor saldo.
		Requiere cta ligada*/
		  if (saldo > cta.obtenerSaldo())
		    return codigo;
		  else 
		    return cta.obtenerCodigo();}   
		
	public CuentaBancaria cta_mayorSaldo(CuentaBancaria cta){
		/*Retorna la cuenta corriente bancaria que tiene mayor saldo. 
		Requiere cta ligada*/    
		   if (saldo > cta.obtenerSaldo())
		    return this;
		   else return cta;}
	
	public boolean equals(CuentaBancaria cta){
		//Requiere cta ligada
		    return codigo == cta.obtenerCodigo() && 
				saldo == cta.obtenerSaldo();}
	
	public void copy (CuentaBancaria cta) {
		//Requiere cta ligada
		  codigo = cta.obtenerCodigo();
		  saldo = cta.obtenerSaldo();}
	
	public CuentaBancaria clone() {
		  CuentaBancaria aux = new CuentaBancaria (codigo,saldo);
		  return aux;}
}	
	
